package pe.gob.pnp.despachadores;

import java.sql.*;
import java.util.*;
import oracle.jdbc.*;
import pe.gob.pnp.actions.*;
import pe.gob.pnp.factories.*;

/**
 *
 * @author  Eduardo Cavero Guzmán,
 *          César Mamani Lipa
 * @date    14/04/2010
 *
 */
public class EstadoExpedienteDespachador {
     public static List<EstadoExpediente> obtenerEstadoExpediente() throws SQLException {
        List<EstadoExpediente> lstEstadoExpediente = new ArrayList<EstadoExpediente>();
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_OBTENER_ESTADOEXPEDIENTE(?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.registerOutParameter(1, OracleTypes.CURSOR);
            cs.execute();
            ResultSet rs = (ResultSet) cs.getObject(1);
            while (rs.next()) {
                EstadoExpediente estadoExpediente = new EstadoExpediente();
                estadoExpediente.setNesexIdentificador(rs.getInt("NESEX_IDENTIFICADOR"));
                estadoExpediente.setCesexDescripcion(rs.getString("CESEX_DESCRIPCION"));
                estadoExpediente.setDesexFechacreacion(rs.getDate("DESEX_FECHACREACION"));
                lstEstadoExpediente.add(estadoExpediente);
            }
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
        return lstEstadoExpediente;
    }

    public static void agregarEstadoExpediente(EstadoExpediente estadoExpediente) throws SQLException {
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_AGREGAR_ESTADOEXPEDIENTE(?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.setString(1, estadoExpediente.getCesexDescripcion());
            cs.execute();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
    }

    public static void modificarEstadoExpediente(EstadoExpediente estadoExpediente) throws SQLException {
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_MODIFICAR_ESTADOEXPEDIENTE(?,?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.setString(1, estadoExpediente.getCesexDescripcion());
            cs.setInt(2, estadoExpediente.getNesexIdentificador());
            cs.execute();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
    }

    public static void eliminarEstadoExpediente(int nesexIdentificador) throws SQLException {
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_ELIMINAR_ESTADOEXPEDIENTE(?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.setInt(1, nesexIdentificador);
            cs.execute();

        } finally {
            ConnectionPool.liberarConexion(conn);
        }
    }
}
